真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于go語言的agent怎么用

這篇文章給大家介紹基于go語言的agent怎么用,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)主要為客戶提供服務項目涵蓋了網(wǎng)頁視覺設計、VI標志設計、全網(wǎng)整合營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應式重慶網(wǎng)站建設公司、成都做手機網(wǎng)站、微商城、網(wǎng)站托管及成都網(wǎng)站維護、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務器租用、視頻、平面設計、SEO優(yōu)化排名。設計、前端、后端三個建站步驟的完善服務體系。一人跟蹤測試的建站服務標準。已經(jīng)為成都建筑動畫行業(yè)客戶提供了網(wǎng)站營銷服務。

一 介紹
     在構建數(shù)據(jù)庫自動化運維系統(tǒng)的時候,數(shù)據(jù)庫服務器上必須要有一個agent來執(zhí)行web服務器端發(fā)起的命令,我們研究了好幾種技術Celery,redis Queue 或者基于socket實現(xiàn),當然還有自己寫,因為之前有同事已經(jīng)完成了一個agent---servant,在和同事溝通之后,我們決定復用servant,不用重復造輪子。servant是一款基于go語言編寫的,通過http協(xié)議調(diào)用,提供權限認證和遠程調(diào)用,支持異步執(zhí)行命令的agent,滿足我們目前數(shù)據(jù)庫備份任務,定時收集數(shù)據(jù)庫元數(shù)據(jù)信息,定時校驗備份的有效性的任務需求。本文是一篇how to 文檔,相對比較詳細的介紹如何安裝和使用servant,希望對讀者朋友有所幫助。

二安裝
2.1 軟件準備
因為該agent是基于go語言編寫的,所以要安裝 go語言包

  1. yum install -y go

  2. cd /opt/

  3. git clone https://github.com/xiezhenye/servant.git

  4. cd /opt/servant

  5. 方式一 make rpm

  6. 方式二 make

2.2 目錄結構
編譯之后查看主要的目錄結構
bin           # 編譯的二進制文件 
conf         # 配置文件目錄
example   #
README.md  
scripts     #servantctl 執(zhí)行文件 用于啟停 查看狀態(tài)等
src          #源代碼文件
維護servant的操作命令 
/opt/servant/scripts/servantctl (start|stop|restart|status|help)
啟動的時候遇到報錯請到/data/logs/servant/servant.log 查看log的信息哪里有錯

2.3 配置文件詳解
默認在/opt/servant/conf里面有配置文件 servant.xml

  1.     

  2.         :2465  #監(jiān)聽的端口

  3.            #調(diào)用的時候是否啟用 權限 驗證,生產(chǎn)環(huán)境建議開啟

  4.             30 # 啟動權限驗證的時候 超時時間,超過30s 則認為該調(diào)用無效

  5.         

  6.         /data/logs/servant/servant.log # 日志目錄log ,這是有贊標準的日志目錄,其他朋友在自己環(huán)境需要適當調(diào)整

  7.     

  8.     

example 的配置文件,使用的時候需要根據(jù)實際情況進行調(diào)整

  1.      ##server和/opt/servant/conf/servant.xml 配置是一樣的。

  2.         :2465

  3.         

  4.             300

  5.         

  6.         servant.log

  7.     

  8. #commands 定義了一個可執(zhí)行的命令組,其中包含了多個command,其中

  9. lang 可以是exec 或者bash

  10. id   是每一組command的標示,runas標示以什么樣的用戶執(zhí)行。

  11. background="true" 標示以后臺方式執(zhí)行,并且servant 立即返回

  12.     

  13.         

  14.             echo "hello world $(whoami)"

  15.         

  16.         

  17.             grep hello

  18.         

  19.         

  20.              sleep ${t}

  21.         

  22.     

  23. # daemon

  24.     

  25.         sleep 10000

  26.     

  27. # 定時器 ,定期執(zhí)行某一個命令

  28. tick 執(zhí)行命令的間隔

  29. deadline 命令執(zhí)行的最長時間,如果為5s 則命令最長執(zhí)行5s ,超過5s會被kill掉?

  30.     

  31.         

  32.         

  33.              date >>/tmp/timer.log

  34.         ]]>

  35.         

  36.     

  37. #文件操作類,和commands類似,可以配置多個操作文件的命令,主要包含 獲取文件內(nèi)容,創(chuàng)建文件,刪除文件,讀取指定字節(jié)范圍

  38. root 表示有權限訪問指定的目錄,例子中是訪問 /tmp/ 目錄下的文件。

  39.     

  40.         

  41.             /tmp/

  42.             get

  43.             head

  44.             post

  45.             delete

  46.             put

  47.             log-bin\.\d+ #正則表達式

  48.         

  49.     

  50. #這個比較少用 訪問數(shù)據(jù)庫

  51.     

  52.         select 1;

  53.     

  54. #

  55.     

  56.         

  57.             bar

  58.         

  59.         

  60.             ${world}

  61.         

  62.     

  63. # 配合auth=true的時候一起使用,訪問的時候 必須使用和配置文件中指定的user ,否則不能調(diào)用servant

  64.     

  65.         someKey

  66.         192.168.1.0/24 #指定允許訪問servant 的ip源地址。通常建議使用本地調(diào)用,更加安全。

  67.         

  68.         

  69.     

以上針對常用的配置做了解釋,更加詳細的解釋可以參考 servant的readme.md
2.4 具體的測試用例  為了測試方便,先去掉權限認證。
comand 支持get 和post 兩種方式調(diào)用

  1. [root@rac4 22:38:05 /opt/servant/conf/extra]

  2. # curl http://127.0.0.1:2465/commands/db1/foo

  3. hello world mysql

  4. [root@rac4 22:40:07 /opt/servant/conf/extra]

  5. # echo "hello world" | curl -XPOST http://127.0.0.1:2465/commands/db1/grep -d @-

  6. hello world

  7. [root@rac4 22:40:08 /opt/servant/conf/extra]

  8. # echo "hxxello world" | curl -XPOST http://127.0.0.1:2465/commands/db1/grep -d @-

文件類型操作
獲取文件內(nèi)容

  1. [root@rac4 22:38:00 /opt/servant/conf/extra]

  2. # curl http://127.0.0.1:2465/files/db1/test/yz.log

  3. youzan ,nihao ,yangyi dba

創(chuàng)建文件

  1. [root@rac4 22:41:56 /opt/servant/conf/extra]

  2. # curl -XPOST http://127.0.0.1:2465/files/db1/test/54.txt -d "hello world "

  3. 驗證上面的寫入情況

  4. [root@rac4 22:42:03 /opt/servant/conf/extra]

  5. # curl  http://127.0.0.1:2465/files/db1/test/54.txt

  6. hello world

更新文件內(nèi)容

  1. [root@rac4 22:45:13 /opt/servant/conf/extra]

  2. # curl -XPUT http://127.0.0.1:2465/files/db1/test/54.txt -d "yangyi dba"

  3. [root@rac4 22:45:26 /opt/servant/conf/extra]

  4. # curl  http://127.0.0.1:2465/files/db1/test/54.txt

  5. yangyi dba

開啟權限驗證,生產(chǎn)環(huán)境下從安全的角度考慮建議開啟權限驗證
修改配置文件 啟用auth 為true 和設置user 配置

  1. [root@rac4 22:16:50 /opt/servant/conf]

  2. # uri='/commands/db1/foo'

  3. # ts=$(date +%s)

  4. # key=someKey

  5. # curl -H "Authorization: ${user} ${ts} $(echo -n "${user}${key}${ts}GET${uri}"|sha1sum|cut -f1 -d' ')" "http://127.0.0.1:2465${uri}"

  6. [root@rac4 22:30:30 /opt/servant/conf]

log報錯 執(zhí)行失敗,因為ts 的實際時間是22:16:50,執(zhí)行的實際時間是22:30:30 超時時間是30s,故調(diào)用失敗

  1. 2017/05/05 22:30:29 INFO (6) [commands] + 127.0.0.1:42798 GET /commands/db1/foo

  2. 2017/05/05 22:30:30 WARN (6) [commands] - auth failed: timestamp delta too large

重新設置時間 ts  再次執(zhí)行 成功。

  1. [root@rac4 22:30:58 /opt/servant/conf]

  2. # ts=$(date +%s)

  3. [root@rac4 22:31:02 /opt/servant/conf]

  4. # curl -H "Authorization: ${user} ${ts} $(echo -n "${user}${key}${ts}GET${uri}"|sha1sum|cut -f1 -d' ')" "http://127.0.0.1:2465${uri}"

  5. hello world mysql

  6. 日志輸出

  7. 2017/05/05 22:31:05 INFO (7) [commands] + 127.0.0.1:42808 GET /commands/db1/foo

  8. 2017/05/05 22:31:05 INFO (7) [commands] command: [bash -c echo "hello world $(whoami)"]

  9. 2017/05/05 22:31:05 INFO (7) [commands] process started. pid: 27706

  10. 2017/05/05 22:31:05 INFO (7) [commands] - execution done

2.5 安裝過程中遇到的問題
1 安裝的時候 需要創(chuàng)建 
mkdir -p /opt/servant/conf/extra
2 認證權限問題
因為默認的/opt/servant/conf/servant.xml 的auth =true ,需要改為false。
不然使用curl 執(zhí)行命令
curl http://127.0.0.1:2465/commands/db1/foo 
日志里面報錯
2017/05/05 21:52:30 INFO (3) [commands] + 127.0.0.1:41988 GET /commands/db1/foo
2017/05/05 21:52:31 WARN (3) [commands] - auth failed: bad auth header

關于基于go語言的agent怎么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網(wǎng)站標題:基于go語言的agent怎么用
當前網(wǎng)址:http://weahome.cn/article/ipgcjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部