開發與維運

阿里雲 Elasticsearch 通過 Beats 實現對 Redis 可視化監控

Redis 以其易用性的特性而被廣泛使用,但管理Redis服務器或集群同樣帶來諸多挑戰——如磁盤故障或內存不足,都可能導致失敗,而採集、分析、監控 Redis 日誌,可以更好的幫助我們管理Redis服務器。

最受好評的數據庫--Redis


Redis是一個非常快速的NoSQL數據存儲。 儘管它主要用作緩存,但它可以應用於各種形式,例如圖形表示和搜索。 客戶端庫可使用所有主要的編程語言提供,並且所有頂級雲服務提供商均將其作為託管服務提供。 在過去的幾年中,Redis被Stack Overflow開發人員調查評為最受好評的數據庫。如果大家對Redis想有更多的認識,請參照鏈接tutorialspoint

準備工作


本文將為大家介紹,如何通過阿里雲Beats插件採集Redis服務器日誌數據,並通過阿里雲 Elasticsearch 的Kibana實現可視化監控,方便大家更好的管理並瞭解 Redis 的運行情況。

準備centos7.4版本 ECS 環境,關閉 selinux、firewall。
準備阿里雲elasticsearch 6.7 版本環境,並使用創建的賬號密碼登錄Kibana
• 安裝 Filebeat以及Metricbeat

在阿里雲 ECS環境中安裝 Redis 服務器

由於 Remi 源提供了目前最新版本的 Redis,我們可以通過該源 YUM 安裝目前最新版本的 Redis。

注:redis默認端口為6379,對外提供服務,請提前在ecs上開啟安全組。

#####通過epel源安裝remi源#####
# yum -y install epel-release
# yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
#####通過指定--enablerepo安裝redis
# yum --enablerepo=remi install -y redis

#####查看redis版本########
# redis-cli --version
redis-cli 5.0.9

####啟動redis服務 #######
# systemctl start redis
####設置開機自啟動######
# systemctl enable redis
# systemctl status redis

####測試是否正常ping###
# redis-cli ping
PONG
####查看redis進程####
# ps -ef | grep redis
redis    20777     1  0 11:18 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root     20805 20430  0 11:23 pts/0    00:00:00 grep --color=auto redis

安裝/配置 Redis 採集日誌目錄

通過 yum 安裝的 Redis,配置文件默認路徑是 /etc/redis.conf,通過以下方式定義Redis日誌輸出文件名稱。

bind 127.0.0.1
logfile /var/log/redis/redis-server.log

說明:

bind: Redis 監聽的地址。
logfile:Redis 日誌文件名稱,指定為redis-server.log。

你可以通過以下指令重啟 Redis
systemctl restart redis

你可以通過以下指令測試 Redis

# redis-cli
127.0.0.1:6379> set name dayu
OK
127.0.0.1:6379> get name
"dayu"
127.0.0.1:6379> del  name
(integer) 1

上面的示例顯示瞭如何將名為dayu的鍵的值設置為1,檢索該值,然後將其刪除。 完成後,按Ctrl + C退出redis-cli。

安裝Filebeat

Filebeat的Redis模塊非常容易將Redis日誌運送到Elasticsearch並在Kibana中可視化它們。 它為Filebeat設置默認配置(包括日誌文件的路徑和Redis服務器端點),設置攝取管道以自動將Redis日誌的結構解析為Elasticsearch字段,並部署可視化和儀表板以方便日誌分析 Kibana中的數據。

我們打開Kibana界面,並點擊界面上左上角的Kibana圖標:

image.png

選擇“Redis日誌”

image.png

進入安裝說明流程,我們可以按照圖中顯示的命令安裝 Filebeat

 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-x86_64.rpm
# sudo rpm -vi filebeat-6.7.0-x86_64.rpm

配置/filebeat.yml。

setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  host: "https://es-cn-0pp19tb17****jc8p.kibana.elasticsearch.aliyuncs.com:5601"

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["es-cn-0pp19tb17****jc8p.elasticsearch.aliyuncs.com:9200"]

  # Enabled ilm (beta) to use index lifecycle management instead daily indices.
  #ilm.enabled: false

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  username: "elastic"
  password: "Elastic@432"

無需進行任何配置我們就可以完成對redis的監控, 但是如果需要自定義設置,可以通過以下指令,讓Filebeat 啟動並配置 Redis模塊

# sudo filebeat modules enable redis
Enabled redis

在阿里雲平臺,我們可以通過以下指令,來啟動 Filebeat

注:在安裝或升級filebeat時,或在啟用新模塊後,必須執行setup命令。

# sudo filebeat setup
# sudo service filebeat start
Starting filebeat (via systemctl):                         [  OK  ]

我們可以在Kibana的 Dashboard 中查看 Redis 的 logs

image.png

我們可以看到 Redis 的 overview:

image.png

安裝 Metribeat


我們可以使用 Metricbeat 的 Redis 模塊週期性地從redis服務器來收集數據。

Metricbeat由模塊和指標集組成。 Metricbeat模塊定義了從特定服務(例如Redis,MySQL等)收集數據的基本邏輯。 該模塊指定有關服務的詳細信息,包括如何連接,收集度量的頻率以及收集哪些度量。

每個模塊都有一個或多個指標集。 度量集是模塊的一部分,用於獲取和構建數據。 指標標準集不是將每個指標標準收集為單獨的事件,而是在對遠程系統的單個請求中檢索多個相關指標標準的列表。 因此,例如,Redis模塊提供了一個信息指標集,該信息指標集通過運行INFO命令並解析返回的結果來從Redis收集信息和統計信息。

image.png

接下來我們來安裝Metricbeat。我們先打開Kibana:

image.png

選擇“Add metric data”,按照截圖中下信息做操作:

image.png

我們可以按照圖中顯示的命令安裝 Metricbeat

# curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.7.0-x86_64.rpm
# sudo rpm -vi metricbeat-6.7.0-x86_64.rpm

在完成相應安裝步驟後,通常情況下,我們不需要做任何特殊,如有需求,可以通過以下指令配置 Metricbeat Redis模塊。

# vim /etc/metricbeat/metricbeat.yml
setup.kibana:

   host: "https://es-cn-4591jumei****1zp5.kibana.elasticsearch.aliyuncs.com:5601"
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["es-cn-4591jumei****1zp5.elasticsearch.aliyuncs.com:9200"]

  # Enabled ilm (beta) to use index lifecycle management instead daily indices.
  #ilm.enabled: false
  #protocol: "https"
  username: "elastic"
  password: "Elastic@432"

啟動 Redis 模塊

# sudo metricbeat modules enable redis
Enabled redis

#####啟動metricbeat服務########
# sudo metricbeat setup
# sudo service metricbeat start

進入Kibana Dashboard,我們可以看到 Redis 的指標信息。
image.png

總結


Redis 是許多企業體系結構的重要組成部分,確保平穩運行是DevOps工程師優先考慮的事情。 而從Redis日誌中獲得的相關指標分析,可以提高問題解決能力(例如,通過配置解決警告),但是更重要的是,它們可以幫助員工輕易的瞭解影響應用程序穩定性的關鍵問題。

當存在影響應用程序穩定性的關鍵問題時,將日誌傳送到阿里雲Elastic Stack 做快速分析,對於快速找到相關問題,並以最小的中斷代價,將系統恢復到正常運行至關重要。

聲明:本文由“Beats:使用Elastic Stack對Redis監控”基於阿里雲服務環境授權改編

原文作者:Elastic 中國社區佈道師——劉曉國
合作編輯:Lettie/大禹
出處鏈接:https://elasticstack.blog.csdn.net/.


image.png

阿里雲Elastic Stack】100%兼容開源ES,獨有9大能力

相關活動


更多折扣活動,請訪問阿里雲 Elasticsearch 官網

阿里雲 Elasticsearch 商業通用版,1核2G ,SSD 20G首月免費
阿里雲 Logstash 2核4G首月免費


image.png

image.png

Leave a Reply

Your email address will not be published. Required fields are marked *