[[フリーソフトウェアのコンパイル]]
https://knowledge.sakura.ad.jp/11633/ https://qiita.com/sugitak/items/ff8f5ad845283c5915d2 https://qiita.com/nekoneck/items/fad926b5ee58ad65f47c
$ 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