[[フリーソフトウェアのコンパイル]]
$ cd src $ http_proxy=http://192.168.1.10:8080/ $ https_proxy=http://192.168.1.10:8080/ $ export http_proxy $ export https_proxy $ wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz $ cd /usr/local $ sudo tar xvzf ~jse03/src/prometheus-2.27.1.linux-amd64.tar.gz $ sudo mv prometheus-2.27.1.linux-amd64 prometheus
$ sudo mkdir /etc/prometheus $ sudo cp -a prometheus/prometheus.yml /etc/prometheus $ sudo useradd -U -s /sbin/nologin -M -d / prometheus $ sudo mkdir -p /var/lib/prometheus $ sudo chown prometheus:prometheus /var/lib/prometheus
$ sudo vi /etc/systemd/system/prometheus.service
以下のファイルを新規作成
[Unit] Description=Prometheus - Monitoring system and time series database [Service] Restart=always User=prometheus ExecStart=/usr/local/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/metrics ExecReload=/bin/kill -HUP $MAINPID TimeoutStopSec=20s SendSIGKILL=no [Install] WantedBy=multi-user.target
systemd リロード
$ sudo systemctl daemon-reload
/etc/prometheus/prometheus.yml を編集する
global: scrape_interval: 60s # 1分ごとにデータ取得 evaluation_interval: 60s # 1分ごとに評価
scrape_configs: - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] # - job_name: '<ジョブ名>' # static_configs: # - tagets: ['<対象のホスト名>:<ポート番号9100>']
$ sudo systemctl start prometheus
http://192.168.100.101:9090/
Prometheus のサーバには,接続元の制限やユーザ認証などのセキュリティ制限を行う仕組みが備わっていない. アクセス制限をするのであれば,nginx などのリバースプロキシを利用するようにというのが公式見解だ.
なので,ufw でアクセス元の制限をする. (ここでは,ポート 9090 へのアクセスを 192.168.1.100 からのみにしている. その他の接続は,全て allow にしている)
$ sudo ufw default allow $ sudo ufw allow from 192.168.1.100 to any port 9090 $ sudo ufw deny 9090 $ sudo ufw enable $ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN Anywhere [ 2] 8080 ALLOW IN Anywhere [ 3] 8081 ALLOW IN Anywhere [ 4] 9090 ALLOW IN 192.168.1.100 [ 5] 9090 DENY IN Anywhere [ 6] 22 (v6) ALLOW IN Anywhere (v6) [ 7] 8080 (v6) ALLOW IN Anywhere (v6) [ 8] 8081 (v6) ALLOW IN Anywhere (v6) [ 9] 9090 (v6) DENY IN Anywhere (v6)
他の接続も追加するなら
$ sudo ufw allow port ssh
とりあえずターゲットは mail サーバ(192.168.1.2)
$ cd src $ http_proxy=http://192.168.1.10:8080/ $ https_proxy=http://192.168.1.10:8080/ $ export http_proxy $ export https_proxy $ wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz $ cd ~/build $ tar xvfz ../src/node_exporter-1.1.2.linux-amd64.tar.gz $ cd node_exporter-1.1.2.linux-amd64 $ sudo mkdir -p /usr/local/bin $ sudo cp node_exporter /usr/local/bin/
$ sudo useradd -U -s /sbin/nologin -M -d / prometheus
$ sudo vi /etc/systemd/system/prometheus-node-exporter.service
以下のファイルを新規作成
[Unit] Description=node_exporter for Prometheus [Service] Restart=always User=prometheus ExecStart=/usr/local/bin/node_exporter # <起動オプション> ExecReload=/bin/kill -HUP $MAINPID TimeoutStopSec=20s SendSIGKILL=no [Install] WantedBy=multi-user.target
起動オプションは
https://github.com/prometheus/node_exporter
を参考にする. デフォルトで取得される統計情報の中で不要なものがあれば、「–no-collector.<名前>」オプションを指定すれば取得対象から除外できる。 また、デフォルトでは収集されない情報を取得対象に加えたい場合は「–collector.<名前>」オプションを指定すれば良い。
init.d のクライアントにインストールするなら以下を参考
https://gist.github.com/eloo/a06d7c70ff2a841b7bb98cd322b851b9 https://gist.github.com/mancubus77/447281619be3731461b73dd4a18593c5
systemd リロード
$ sudo systemctl daemon-reload
$ sudo systemctl start prometheus-node-exporter
/etc/prometheus/prometheus.yml を編集する
# - job_name: '<ジョブ名>' # static_configs: # - tagets: ['<対象のホスト名>:<ポート番号9100>'] - job_name: 'mail' static_configs: - targets: ['192.168.1.2:9100']
$ sudo systemctl restart prometheus
参考 https://grafana.com/docs/grafana/latest/installation/debian/#install-from-apt-repository
apt リポジトリ
https://packages.grafana.com/oss/deb stable main
$ sudo apt-get install -y apt-transport-https $ sudo apt-get install -y software-properties-common wget $ wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - $ echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list $ sudo apt-get update $ sudo apt-get install grafana
インストールされるパッケージ内容
$ sudo systemctl daemon-reload $ sudo systemctl start grafana-server $ sudo systemctl status grafana-server $ sudo systemctl enable grafana-server.service
TCP ポート 3000番でサーバが立ち上がる. パスワードはいつものサーバ用の物をつける
Web コンソールにログイン後
左側歯車アイコン > [Data Sources] > [Add data sources]> Prometheus > [Select]
> [Save & Test]
左側 + アイコン > [Dashboard]
/etc/prometheus/prometheus.yml に追記
global: rule_files: - "alert_rules.yml"
/etc/prometheus/alert_rules.yml を作成
groups: - name: target_status rules: - alert: scrape_failed expr: up == 0 for: 5m labels: severity: error type: node annotations: summary: monitoring target failed.
$ cd src $ http_proxy=http://192.168.1.10:8080/ $ https_proxy=http://192.168.1.10:8080/ $ export http_proxy $ export https_proxy $ wget https://github.com/prometheus/alertmanager/releases/download/v0.22.2/alertmanager-0.22.2.linux-amd64.tar.gz $ cd ~/build $ tar xvzf ~jse03/src/alertmanager-0.22.2.linux-amd64.tar.gz $ cd alertmanager-0.22.2.linux-amd64 $ sudo cp alertmanager /usr/local/bin $ sudo cp amtool /usr/local/bin
$ sudo mkdir -p /var/lib/prometheus/alertmanager $ sudo chown prometheus:prometheus /var/lib/prometheus/alertmanager $ sudo vi /etc/systemd/system/prometheus-alert-manager.service
新規作成
[Unit] Description=Alertmanager for Prometheus [Service] Restart=always User=prometheus ExecStart=/usr/local/bin/alertmanager --config.file=/etc/prometheus/alertmanager.yml --storage.path=/var/lib/prometheus/alertmanager ExecReload=/bin/kill -HUP $MAINPID TimeoutStopSec=20s SendSIGKILL=no [Install] WantedBy=multi-user.target
systemd リロード
$ sudo systemctl daemon-reload
https://knowledge.sakura.ad.jp/11635/
新規作成もしくはソースからコピー
$ sudo cp ~/build/alertmanager-0.22.2.linux-amd64/alertmanager.yml /etc/prometheus/alertmanager.yml $ sudo vi /etc/prometheus/alertmanager.yml
global: resolve_timeout: 10m smtp_smarthost: '<SMTPサーバーのホスト>:<ポート>' smtp_from: '<From:行で使用するメールアドレス>' smtp_auth_username: '<SMTP AUTHで使用するユーザー名>' smtp_auth_password: '<SMTP AUTHで使用するパスワード>' smtp_require_tls: '<TLSを使用する場合はtrue、使用しない場合はfalse>' route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_intercal: 1h receiver: 'default' receivers: - name: <名前> email_configs: - to: '<メールアドレス>'
途中で読み込んでいるテンプレートは,alertmanagerのGitHubリポジトリ https://github.com/prometheus/alertmanager/tree/master/template にサンプル(default.tmpl)があるので, これらを /etc/prometheus/alertmanager_templates/*.tmpl にコピーして利用すると良い.
$ sudo systemctl --now enable prometheus-alert-manager
/etc/prometheus/prometheus.yml に以下の行を設定する
alerting: alertmanagers: - static_configs: - targets: - localhost:9093