ミッションの背景
会社のサーバーには、CPU がビジー状態、メモリが不足している、ディスク容量がほぼ満杯である、ネットワークが停止している、クライアントが接続できないなど、さまざまな問題が発生することがよくあります。運用保守エンジニアが常にサーバーを監視してチェックすることはできず、手間がかかり、問題の発見が間に合わない可能性があります。したがって、監視が必要なすべてのサーバーとそのさまざまな必要なステータス データをリアルタイムで収集するための完全な監視システムを確立する必要があります。 a>を実行できるため、マシンは積極的かつ迅速に警報を発することができます。人々とコミュニケーションをとる。 アラーム、グラフィック表示
ミッション要件
1. 監視サーバーを構築する
2. アイデア次第で監視をカスタマイズし、グラフィック表示やアラームを実現
タスクの内訳
1.Zabbixサーバーのセットアップ
2. ローカルホストとリモートホストを監視する
3. 監視項目の作成方法を学ぶ
4. 監視項目のグラフィックを作成する
5. グラフィックスのトリガーを作成する
6. アラームを設定する
学習目標
- zabbixサーバーをインストールできる
- zabbix-agent を使用してこのマシンを監視できます
- zabbixユーザーとユーザーグループを管理できる
- zabbix-agent を使用してリモート Linux マシンを監視し、ホスト グループに参加する機能
- カスタム監視項目を追加する機能
- 追加した監視項目のグラフ作成機能
- ホストを監視するための集計グラフを作成する機能
- 監視項目に簡単なトリガーを設定可能
モニタリングについて理解する
なぜ監視するのか?
回答: リアルタイムでデータを収集し、アラームを通じて問題を適時に検出し、タイムリーに処理します。データは最適化の基礎を提供することもできます。
生活の中でのモニタリング:
それではLinux システムの主な監視は何でしょうか?
回答: CPU 負荷、CPU アイドル時間、メモリ使用量、メモリ使用率、IO、ネットワークなど、監視したいデータ。
主流のオープンソース監視プラットフォームの紹介
-
mrtg (Multi Router Traffic Grapher) は、snmp プロトコルを通じてデバイスのトラフィック情報を取得します。 PNG 形式のグラフィックを含む HTML ドキュメントがユーザーに表示されます。
-
cacti (Cactus) PHP 言語で実装されたソフトウェア。その主な機能は、snmp サービスを使用してデータを取得し、rrdtool を使用してデータを保存および更新することです。公式ウェブサイトのアドレス: https://www.cacti.net/
-
nagios はクロスプラットフォームで、多くのプラグインがあり、強力なアラーム機能を備えています。公式 Web サイトのアドレス: Nagios オープンソース | Nagios オープンソース
-
centreon 最下層は nagios を使用します。 nagios統合版ソフトウェアです。公式 Web サイトのアドレス:Centreon | IT インフラストラクチャ監視ソフトウェア
-
ganglia は、リソースをほとんど消費せずに数千のノードを測定するように設計されています。公式 Web サイトのアドレス:Ganglia 開発チーム · GitHub
-
open-falcon Xiaomi がリリースした運用および保守監視ソフトウェアは、効率性と可用性が非常に優れています。時間が短く、ユーザー数も少ないです。公式 Web サイトのアドレス: Open-Falcon - 監視システムと時系列データベース
-
==zabbix== クロスプラットフォーム、描画、複数条件アラーム、および複数の API インターフェイス。使用ベースは非常に大きいです。公式 Web サイトのアドレス: Zabbix :: エンタープライズクラスのオープンソース ネットワーク監視ソリューション
-
==prometheus== は、時系列数値データに基づくコンテナ監視ソリューションです。公式 Web サイトのアドレス: Prometheus - 監視システムと時系列データベース
ザビックス
環境の準備:
-
固定IP
-
CPU名
ホスト名をそれぞれ設定する # hostnamectl set-hostname --static zabbixserver.cluster.com 3 つの IP とホスト名は相互にバインドされています # vim /etc/hosts 10.1.1.11 zabbixserver.cluster.com 10.1.1.12 Agent1.cluster.com 10.1.1.13 エージェント2.cluster.com
-
時刻同期
# systemctl restart ntpd # systemctl ntpd を有効にする
-
ファイアウォール、SELinux をオフにする
# systemctl stop firewalld # systemctl ファイアウォールを無効にする # iptables -F # setenforce 0 setenforce: SELinux が無効になっています
-
yum を構成します (以下の centos + zabbix ソースをインストールした後のデフォルトの yum ソース)
すべてのマシン (zabbix サーバーとすべての監視対象ターミナル) と zabbix ソース # vim /etc/yum.repos.d/zabbix.repo [ザビックス] name=zabbix Baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/3.4/rhel/7/x86_64/ 有効=1 gpgcheck=0 [zabbix_deps] name=zabbix_deps Baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/x86_64/ 有効=1 gpgcheck=0
zabbixサーバーのインストール
1. zabbix と mariadb データベースをインストールする
[root@zabbixserver ~]# yum install zabbix-server-mysql zabbix-web-mysql mariadb-server
2. mysql (mariadb) にデータを格納するデータベースを作成して認可し、zabbix に必要なテーブルとデータをインポートします
[root@zabbixserver ~]# systemctl restart mariadb.service [root@zabbixserver ~]# systemctlenable mariadb.service [root@zabbixserver ~]# mysql MariaDB [(none)]> データベース zabbix のデフォルトの文字セット utf8 を作成します; ここでは utf8 文字セットを使用する必要があります。そうしないと、zabbix 内の多くの中国語の文字が後で使用されなくなります (たとえば、中国語名のユーザーは作成できません) MariaDB [(なし)]> 終了 MariaDB [(none)]> フラッシュ権限; MariaDB [(none)]> zabbix.* 上のすべてを '123'; で識別される zabbix@'localhost' に付与します
3. テーブルデータをインポートする
次のコマンドを無作為にコピーして貼り付けないでください。バージョンが異なる場合(または公式の yum ソース バージョンがアップグレードされている場合)、3.4.15 を対応するバージョンに変更する必要があります。 [root@zabbixserver ~]# zcat /usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz |mysql -u zabbix -p123 zabbix
4. zabbix メイン設定ファイルを設定し、サービスを開始し、ポートを確認します
次のパラメータを見つけて確認します (==デフォルト値が正しい場合は、コメントを開かないでください==。デフォルト値の場合は、値が正しくありません。正しく変更してコメントを開きます)
接続データのパスワードとソケットを変更するだけです [root@zabbixserver ~]# vim /etc/zabbix/zabbix_server.conf ListenPort=10051 DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=123 -- これは、上記のステップ 2 の承認に応じて変更する必要があります DBSocket=/var/lib/mysql/mysql.sock -- ここのデフォルトのソケット パスは間違っています。私のパスに変更してください。 ListenIP=0.0.0.0 [root@zabbixserver ~]# systemctl restart zabbix-server [root@zabbixserver ~]# systemctl enable zabbix-server [root@zabbixserver ~]# lsof -i:10051
5. zabbix の httpd サブ設定ファイルを設定し、httpd を起動します
20 行目のコメントを開いて、自分のタイムゾーンに変更します [root@zabbixserver ~]# vim /etc/httpd/conf.d/zabbix.conf 20 php_value date.timezone アジア/上海 [root@zabbixserver ~]# systemctl restart httpd [root@zabbixserver ~]# systemctl httpd を有効にする
6、ブラウザを使用してhttp://10.1.1.11/zabbixにアクセスし、プロンプトに従ってインストールします
示されているインストール プロセスに従います 1、ようこそ 2,前提条件の確認 3,DB 接続の設定 データベースのユーザー名として zabbix を入力し、パスワードとして 123 を入力します (事前に承認されています) 4,Zabbix サーバーの詳細 名前オプションに zabbix サーバーの IP またはホスト名を入力します 5、インストール前の概要 6, インストール 完了後 ログインユーザー名: admin ログインパスワードは zabbix です。
7. 右上隅にある悪役のようなアイコンをクリックします --》 言語の選択 中国語 zh-cn -->> 更新をクリックしてファイル インターフェイスに切り替えます
このマシンを監視する
1. マスターに zabbix-agent をインストールします
[root@zabbixserver ~]# yum install zabbix-agent
2. zabbix-agent サービスを開始します。
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_agentd.conf 次の 2 つの一般的なオプションはデフォルト値であり、設定する必要はありません Server=127.0.0.1 -- zabbix サーバーの IP。これはローカル マシンです。 ListenPort=10050 -- 監視サーバーが監視対象クライアントに接続するポート [root@zabbixserver ~]# systemctl restart zabbix-agent [root@zabbixserver ~]# systemctl enable zabbix-agent [root@zabbixserver ~]# lsof -i:10050
3. Web 管理インターフェイスに戻ります -> 「構成」をクリックします -> 「ホスト」をクリックします -> デフォルトでは、Zabbix サーバーというローカルマシンが表示されますが、ステータスは非アクティブ化されています -> クリックして有効にします
4. zabbix サーバーのグラフィックをクリックします -- 「任意の画像を選択してプレビューをクリックします」 -- 画像に文字化けが表示されます。
5.文字化けの解決策:フォントを変更する
共有した ttf-arphic-ukai.tar.gz ソフトウェア パッケージをダウンロードし、次の変更を加えます # tar xf ttf-arphic-ukai.tar.gz -C /usr/share/zabbix/fonts/ # mv /usr/share/zabbix/fonts/ukai.ttc /usr/share/zabbix/fonts/ukai.ttf # vim /usr/share/zabbix/include/defines.inc.php 54 define('ZBX_GRAPH_FONT_NAME', 'ukai'); -- 元のグラフフォントのフォントを ukai に変更します
6. 終了後、サービスを再起動する必要はなく、zabbix Web インターフェイスに戻り、グラフを更新して、コード化けがないことを確認します。
zabbix-agent を介してリモート マシンを監視する
1. Agent1 に zabbix-agent パッケージをインストールします。
[root@agent1 ~]# yum install zabbix-agent
2. zabbix-agent 側で設定ファイルを設定し、サービスを開始して起動時に自動的に開始されるようにします。
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf 97 Server=10.1.1.11 は、zabbix 監視サーバーの IP に変更されます [root@agent1 ~]# systemctl restart zabbix-agent [root@agent1 ~]# systemctl zabbix-agent を有効にする [root@agent1 ~]# lsof -i:10050
3. Web 管理インターフェイスに戻ります -- [構成] をクリックします -- [ホスト] をクリックします -- [ホストの作成] をクリックします
4. ホストを監視するテンプレートを追加します -- 「テンプレートをクリック --」 選択をクリック -- 「テンプレート OS Linux にチェックを入れます (他のテンプレートは任意に追加できます) -- 「選択をクリック -- 「追加をクリック --」最後に右下隅の「追加」をクリックします
5、確認
zabbix ユーザーとユーザー グループ
ユーザー: Zabbix はマルチユーザー管理を提供します。異なるユーザーは異なる権限、異なる言語、異なるアラーム方法などを設定できます。
Web管理インターフェース--》管理--》ユーザー
ユーザー グループ (グループ): ユーザーのグループ管理。
Web 管理インターフェイス - 「管理」 - 「ユーザー グループ」
練習する:
-
usergroup1 という名前のユーザー グループを追加します。
-
Zhang San という名前の別のユーザーを追加し、usergroup1 グループと Zabbix 管理者グループに参加します。
ホストとホストグループ
ホスト: 監視対象のデバイス (サーバー、スイッチなど) を指します
Web管理インターフェース--》管理--》ホスト
これはローカル マシンとリモート マシンを監視するときに以前に行われたため、ここではスクリーンショットは取得しません。
ホストグループ: 監視対象のホストのグループを指します (主に、グループ化を容易にするために多数のホストがある場合に使用されます)
Web管理インターフェース--「管理」--「ホストグループ」
演習: 前に実行した監視対象のクライアント Agent1 を webservers という名前の新しいグループに追加し、agent1 を元の Linux サーバー グループに属するものとして保持します。
監視項目とアプリケーションセット(ポイント)
監視項目 (item): ホストから収集されるデータ情報であり、データ収集または監視の最小単位を表します。。
アプリケーション: 複数の監視プロジェクトで構成されるグループを表します。
監視項目の作成
Web 管理インターフェース -- 「設定」 -- 「ホスト」 -- 「監視項目」 (ここでは、agent1 のホストの監視項目を選択しました ;つまり、各ホストには独自の監視項目があり、選択したものが設定されたものになります)--》右上隅の [監視項目の作成] をクリックします。
上記で作成されたagent.hostnameは、デフォルトでTemplate OS Linuxテンプレートに含まれています。これは、がすでに使用されているため、<を作成することはできないことを意味します。 a i=2 >。
==注意:監視項目のキー値の記述方法が難しいため、パラメータの受け渡し方法が分からない場合は、テンプレートに既に含まれている監視項目を参照してください。 ==
演習: agent1 がリンクしているテンプレートをキャンセルします (CPU 負荷監視項目がテンプレート OS Linux テンプレートにすでに存在するため)、次に、下図を参照して、agent1 に対して次の監視項目を作成します。
-
CPU負荷(1分)
-
CPU負荷(5分)
-
CPU負荷(15分)
答え:
以下に示すように3つの監視項目を作成します
監視項目のグラフ作成
Web管理画面→「設定」→「ホスト」→「グラフ(エージェント1ホストのグラフを選択)」→「右上をクリックしてグラフを作成」→グラフ名を選択し、監視項目を追加以下で定義したばかりです --" 追加後、グラフィックをプレビューします
一定時間が経過すると、グラフィック効果は次のようになります。
カスタム監視項目
組み込みのキー値の使用にまだ慣れていないか、監視したいものがいくつかあるのに関連するキー値がありません。カスタマイズすることもできます。キー値。
次に、カスタム監視項目を作成します。
Agent1 のユーザー ログイン数を監視します (デフォルトでは、ログイン ユーザー数を監視できる system.users.num というキー値がありますが、ここでは実験では独自に定義したキー値を使用しました)
1. 監視対象端末エージェント 1 で、好きなだけ端末を開き、複数のログイン ユーザーをシミュレートします。
[root@agent1 ~]# 誰 |wc -l 14 ログインユーザー数が 14 人であることを確認しました。
2. 監視対象端末エージェント1で、ユーザーパラメータを定義します。
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf 295 UserParameter=loginusers,who | wc -l 注:loginusers は私がカスタマイズしたキー値の名前 (監視項目の作成時に使用されます) であり、次の who |wc -l コマンドが監視されます [root@agent1 ~]# systemctl restart zabbix-agent
3. まず、監視対象端末エージェント1の結果が取得できるかどうかをzabbixサーバ上でテストします。
zabbix-get コマンドをインストールするには、zabbix 公式 yum ソースが必要です [root@zabbixserver ~]# yum install zabbix-get このコマンドを使用して監視対象エンドの結果を取得すると、テストは OK です。 [root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k ログインユーザー 14 -- 取得された値が実際にagent1 の値であることを確認できます
4. Web管理画面--「設定」--「ホスト」--「監視項目(エージェント1の監視項目を選択)」--右上隅の「監視項目の作成」をクリックします。
5. 「追加」をクリックして、追加が成功したかどうかを確認します。
カスタム監視項目のグラフを作成する
6. Web 管理インターフェイス -- 「設定」 -- 「ホスト」 -- 「グラフィック (エージェント 1 のホストのグラフィックを選択します) -- 「右上隅の [グラフィックの作成] をクリックします --」 グラフィック名を選択し、先ほど作成したグラフィックを追加します。監視項目——》追加後、グラフをプレビュー
集計グラフ
上記の監視項目の設定では、グラフを定義しました。また集約グラフィックは、複数の重要で一般的に使用されるデータを統合して、見やすく表示します。
エージェント 1 の CPU 負荷とリモート Linux ログイン ユーザー数の 2 つのグラフが非常に重要であり、頻繁に表示する必要があると考えて、それらをまとめて集計したいとします。
Agent1 の重要なグラフをクリックします - -》右上隅をクリックして集計グラフを編集します - -》「変更」をクリックします
別の写真にも同じことが当てはまり、最終的な効果は次のようになります。
トリガー(キーポイント)
トリガー (トリガー): 監視項目を定義して、臨界値 (しきい値) に達するか、条件を満たすと、ステータスの変化が検出されます (OK が問題になります、問題が問題になります) OK)
次に、agent1のログインユーザー数を監視するトリガーを作成します(ログインユーザー数が20人を超えると警告が発生します)
1. Web管理インターフェース--「構成」--「ホスト」--「トリガー(リモートエージェント1のトリガーを選択)」--「右上隅をクリックしてトリガーを作成します」
2. トリガーを作成した後、ログイン ユーザー数が 20 を超えるように、agent1 でさらにいくつかの端末を開いてみてください。その後、下の 2 つの図に示されている場所に移動して、確認の効果を確認できます。
nginxの監視(拡張)
nginx にはステータス ページがあり、ステータス ページの情報を表示することで nginx サービス ロードに接続できます。
以下では、agent1 nginx を監視していると仮定します。
1. Agent1 に nginx をインストールする
[root@agent1 ~]# yum install epel-release [root@agent1 ~]# yum install nginx
2. nginx のサーバー設定セクションに次の段落を追加し、サービスを再起動します。{}
[root@agent1 ~]# vim /etc/nginx/nginx.conf 場所 / ステータス { stub_status オン; allow 10.1.1.11; # zabbix サーバー アクセス (または zabbix_proxy) を許可する必要があります allowed 127.0.0.1; # ローカル アクセスを許可する allowed 10.1.1.1; # この IP は Windows ホスト アクセス用に追加されます すべてを拒否します。 access_log off; [root@agent1 ~]# systemctl restart nginx [root@agent1 ~]# systemctl nginx を有効にする
3、ブラウザ経由でアクセスしますhttp://10.1.1.12/status。次の nginx ステータス情報を確認できます。
アクティブな接続: 1 サーバーは処理されたリクエストを受け入れます 59 59 115 読み取り: 0 書き込み: 1 待機: 0 アクティブな接続: 現在開いているアクティブな接続の数 accepts: 受信した接続の数 処理済み: 処理された接続の数 リクエスト: 処理されたリクエストの数。キープアライブ モードでは、リクエストの数が接続の数よりも大きくなる場合があります。 読み取り値: 現在リクエストを受信している接続の数 書き込み: 受信されたリクエストと応答プロセスの接続数 待機中: 接続維持モード、アクティブな接続の数
4.agent1にスクリプトを用意し、実行権限を与える
[root@agent1 ~]# vim /opt/nginx_status.sh #!/bin/bash HOST="127.0.0.1" ポート="80" function ping { # これは ping ではなく、nginx が存在するかどうか判断します /sbin/pidof nginx | wc -l } 機能がアクティブです { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep 'アクティブ' | awk '{print $NF}' } 関数は { を受け入れます /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $1}' } 処理される関数 { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $2}' } 関数リクエスト { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk '{print $3}' } 関数の読み取り { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep '読み取り' | awk '{print $2}' } 関数の作成 { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep '書き込み' | awk '{print $4}' } 待機中の関数 { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep '待機中' | awk '{print $6}' } $1 [root@agent1 ~]# chmod 755 /opt/nginx_status.sh
5.agent1 で UserParameter を定義し、サービスを再起動します
設定ファイルに次の文を追加します [root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf UserParameter=nginx_status[*],/opt/nginx_status.sh $1 [root@agent1 ~]# systemctl restart zabbix-agent
6. zabbix_server 上 (zabbix_proxy を使用する場合、操作は zabbix_proxy 上で実行されます) zabbix_get テスト
[root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k nginx._tatus[ping] 1 [root@zabbixserver ~]# zabbix_get -s 10.1.1.12 -k nginx_status[handled] 76
7. テストは正常に監視して値を取得でき、監視が OK であることを示します。
監視項目をグラフィカルに定義するプロセスは、お客様自身で完了してください。
宿題
1. Agent1 の全プロセス数をカスタマイズして監視し、トリガーを設定します (数が 200 を超えると警告、300 を超えると重大な警告、400 を超えると災害)
2. Agent1 上の mariadb の現在ログインしているユーザー数をカスタマイズして監視し、トリガーを設定します (50 人を超えると警告、100 人を超えると重大な警告、150 人を超えると災害)
3. 監視エージェント 1 の TCP 接続の数をカスタマイズし、トリガーをカスタマイズします。
4. 特定のパーティションのディスク使用量を監視し、トリガーをカスタマイズする
5. 利用可能なメモリを監視し、トリガーをカスタマイズする