企業向けWeChatアラート監視のためのPrometheus+Grafana+AlertmanagerのDockerインストール
ディレクトリ
I. はじめに
<テーブル ソフトウェア名 紹介文 アクセスアドレス ノードエクスポータnode-exporterはgo言語で開発され、Linuxシステムからハードウェアおよびシステムメトリクスを収集するために特別に設計されています。
http://192.168.220.76:9100/metrics プロメテウス Prometheusは、SoundCloudが開発したオープンソースの監視・アラートシステムおよび時系列データベース(TSDB)です。http://192.168.220.76:9090/graph
CADVISOR-Exporter(キャドバイザー・エクスポーター コンテナ情報を収集する。 http://192.168.220.76:8080/containers グラファナ Grafanaは、大規模な測定データを可視化するためのオープンソースプログラムです。 http://192.168.220.76:3000 アラートマネージャーAlertmanagerはPrometheusに依存しないコンポーネントで、Prometheusのクエリ文に対応し、非常に柔軟なアラートを提供します。
http://192.168.220.76:9093/#/alerts ブラックボックスエキスポータ blackbox_exporterは、http, dns, tcp, icmpの監視データ収集を行うPrometheusの公式エクスポータの一つです。 http://192.168.220.76:9115/prod
画像出典:公式
II. Node-exporterのインストール
1. node-exporterの起動
docker run -d -p 9100:9100 --name node-exporter\
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" \
prom/node-exporter
2. アクセス方法 : http://192.168.220.76:9100/metrics
III. Prometheusのインストール
1. 新しいディレクトリprometheusを作成し、設定ファイルprometheus.ymlを編集します。
mkdir /home/prometheus/conf
cd /home/prometheus/conf
vim prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting: # Specify alertmanager alerting component address
alertmanagers:
- static_configs:
- targets: [ '192.168.220.76:9093']
rule_files: #Specify alarm rule files
- "rules.yml"
scrape_configs:
- job_name: 'nodehost'
static_configs:
- targets: ['192.168.220.76:9100','192.168.220.76:8080']
labels:
appname: 'Node1'
- job_name: 'prometheus'
static_configs:
- targets: [ '192.168.220.76:9090']
labels:
appname: 'prometheus'
- job_name: 'prometheus_port_status'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets: ['192.168.220.76:12345']
labels:
instance: 'port_status'
group: 'tcp'
relabel_configs: # here for blackbox-exporter configuration
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.220.76:9115
2. rules.yml ファイルを作成する
mkdir /home/prometheus/conf
cd /home/prometheus/conf
vim rules.yml
groups:
- name: example #Define rules groups
rules:
- alert: InstanceDown #Define alarm name
expr: probe_success == 0 #Promql statement that triggers the rule
for: 30s
labels: #Label defines the level and host of the alarm
name: instance
severity: Critical
annotations:
summary: " {
{ $labels.appname }}" #Alarm summary, take the name of the appname of the alarm message
description: " Service stopped running " #Alarm message
value: "{
{ $value }}%" # Current alarm status value
3. プロメテウスコンテナの作成
docker run -d -p 9090:9090 --name=prometheus \
-v /home/prometheus/conf/:/etc/prometheus/ \
prom/prometheus
4. アクセス方法 http://192.168.220.76:9090/graph
5. アクセス方法 http://192.168.220.76:9090/targets
IV. Cadvisor-exporterのインストール
1. Cadvisor-exporterコンテナを起動します。
docker run --volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 --detach=true --name=cadvisor \
--net=host google/cadvisor:latest
2. アクセス方法 http://192.168.220.76:8080/containers/
V. Grafanaのインストール
1. grafana-storageフォルダーを作成し、パーミッションを設定します。
mkdir /home/grafana-storage
chmod 777 -R /home/grafana-storage
2. grafanaコンテナの作成
docker run -d --name grafana\
-p 3000:3000 \
-v /home/grafana-storage:/var/lib/grafana \
grafana/grafana
3. アクセス方法 http://192.168.220.76:3000/ ユーザー名とパスワードはデフォルトでadmin
4. データソースの設定
5. https://grafana.com/grafana/dashboards でテンプレートを検索します。
テンプレートIDを追加し、テンプレートjsonファイルをインポートすると、テンプレートが表示されます
VI. Alertmanagerのインストール
1. alertmanager.yml の作成
vim /home/prometheus/conf/alertmanager.yml
global:
resolve_timeout: 5m
wechat_api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
templates:
- '/etc/alertmanager/template/wechat.tmpl'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 5m
receiver: 'wechat'
receivers:
- name: 'wechat'
wechat_configs:
- corp_id: <enterprise_id> # here is the enterprise ID of the enterprise wechat
to_party: '1' # here is the department ID of enterprise wechat
agent_id: '1000002' #This is the AgentId of the Enterprise Wechat application
api_secret: <secret> #This is the enterprise Wechat application's secret
send_resolved: true
vim /home/prometheus/template/wechat.tmpl
{
{ define "wechat.default.message" }}
{
{ range $i, $alert :=.Alerts }}
===alertmanager monitoring alerts===
Alert status: {
{ .Status }}
Alarm level: {
{ $alert.Labels.severity }}
Alert type: {
{ $alert.Labels.alertname }}
Alert application: {
{ $alert.Annotations.summary }}
Faulting host: {
{ $alert.Labels.instance }}
Alert subject: {
{ $alert.Annotations.summary }}
Trigger threshold: {
{ $alert.Annotations.value }}
Alert details: {
{ $alert.Annotations.description }}
Trigger time: {
{ $alert.StartsAt.Format "2021-01-02 15:04:05" }}
===========end ============
{
{ end }}
{
{ end }}
<イグ 2. wechat通知テンプレート wechat.tmpl を作成する。
docker run -d -p 9093:9093 --name alertmanager \
-v /home/prometheus/conf/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
-v /home/prometheus/template:/etc/alertmanager/template \
docker.io/prom/alertmanager:latest
3. スタート
docker run --name blackbox -p 9115:9115 -itd prom/blackbox-exporter
4. Visit http://192.168.220.76:9093/#/alerts
VII. Blackbox-exporterのインストール
1. blackbox-exporterを起動します。
docker run --name blackbox -p 9115:9115 -itd prom/blackbox-exporter
2. 説明
blackbox-exporterはicmp, tcp, http, postの状態を監視しています。
probe_success メトリクスは、icmp, tcp, http, post の監視が正常かどうかを判断するものです。値1が正常、0が異常です。
3. Visit http://192.168.220.76:9115/prod
VIII. 注意喚起の効果
1. 企業向けWeChatは、以下のようなアラートを受信します。
* 1.企業向けWeChatでビジネスを作成するか、直接アプリを作成する必要があります。
* 2. ファイルの保存場所に注意してください、すでにコンテナファイルの場所にある
* 3.上記、IPアドレスの置き換えに注意
関連
-
[解決済み】Dockerエラー:無効な参照形式:リポジトリ名は小文字でなければならない
-
[解決済み】ドッカーコンテナがすぐに終了してしまう理由
-
[解決済み】D-Bus接続の取得に失敗しました。操作が許可されていません
-
[解決済み] com.docker.hyperkit における mac 用の docker のメモリ使用量
-
[解決済み] Ansibleタスクのタイムアウトの最大長
-
[解決済み] Docker Unknown フラグ --mount
-
[解決済み] docker cp が実行中のインスタンスで "No such container:path" を投げる [閉じた] 。
-
[解決済み] docker-proxy - 443 でバインドしようとすると、ユーザーランドプロキシーを開始する際にエラーが発生します。
-
docker encountered problem 4: yaml: line 1: mapping values are not allowed in this context.
-
httpコード中にdocker registry apiのインタラクションを呼び出す コード詳細
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】FrontEnd DockerFIle.v0との解決に失敗しました。
-
[解決済み] 停止したコンテナで画像が使用されている
-
[解決済み】Dockerのビルドコンテキスト外のファイルをインクルードする方法とは?
-
[解決済み] 「docker build" は正確に1つの引数を必要とします。
-
[解決済み] ポッドで "ErrImageNeverPull "を取得する
-
[解決済み] docker cp を使ってホストコンピュータから docker コンテナに rsync する方法
-
[解決済み] docker ERROR: 不明なブロブ
-
docker共通コマンドのまとめ
-
minttyを使用している場合は、プレフィックスを付けてみてください。
-
DockerのインストールとRocketMQの利用について