[問題] 有辦法不侵入式的執行code嗎?
其實有點承上文,
我的需求是想控制Logstash(後稱LS)這個東西,
它是Ruby寫的東西,然後Run在JVM上面(JRuby),
因為有些狀況,我想要侵入Logstash正在運行的JVM,
我想要控制它的Thread執行的速度,
在某些情況下,我必須要讓LS慢下來不要跑這麼快。
我一開始是想透過我的程式當作進入點,
再導向LS主程序,這樣我就可以控制了,
但尷尬的是我不懂Ruby,所以也就不曉得怎麼卡進去了。
後來我透過JMX,也看不出哪裡可以讓我插入執行的地方。
然後我又知道BTrace這東西,所以想利用它ASM的原理來完成我的需求。
我主要是不想動LS任何東西,就可以進入它的JVM做事情,
不曉得版上的大大對於這種需求有沒有建議的方式?
--
你只是大大的世界中小小的一個島嶼
在你懷中長大的我們 從未忘記
我要用全部的力氣唱出對你的深情
歌聲中 只是真心的讚美 929 吳志寧
也有感謝和依戀 疼惜和憂煩 全心全意愛你
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.65.102
※ 文章網址: https://www.ptt.cc/bbs/java/M.1489157602.A.181.html
→
03/10 23:33, , 1F
03/10 23:33, 1F
→
03/11 13:17, , 2F
03/11 13:17, 2F
→
03/11 17:08, , 3F
03/11 17:08, 3F
我想我得解釋清楚一點(但說起來好累啊),
倒也不是機器給不給力的問題...
是我們使用ELKstack這個東西,
我們使用架構也如同官方說明:
https://www.elastic.co/guide/en/logstash/5.2/
deploying-and-scaling.html#deploying-message-queueing
(抱歉...請自己接上連結,PTT縮址會被限制發文QQ)
整套ELKstack分散在四台機器上,跟各個要收log的host,
問題就在環境不穩,動不動就網路不通、或者硬碟突然被塞滿、
甚至莫名其妙VM掉下來(不要問我為什麼,我也不想這樣...)
任一個環節出問題,只要Queue滿了,整條路都會不通,
不通之後LS這傢伙從File收到的資料送不出去,
就會被當作錯誤而被丟棄,造成資料遺失...
而我想做的就是監控整個環節,
當異常的時候我需要控制所有shipper(約有20來個LS)停下來,
或者是繁忙的時候,我要讓他們慢下來...
(我知道官方後來推Filebeat當作前端shipper,但目前無法更換架構...)
而我不想修改LS任何東西的原因在於未來升版的話會是一個麻煩點,
因為這樣我的控制機制跟LS有過高的相依性,
所以我才想採用JMX或者是BTrace這種而外侵入的方式來做。
我是有想了很多偏方,就是監控透過SSH進去該台機器下指令停止,
或者LS啟動TCP的input來接受訊號處理。
但我想既然他是JVM,那就透過JMX或其他JAVA的方法來做,比較實際。
一方面是私心想玩java的東西,一方面是如果透過Linux基礎來做,
意味著如果未來有其他OS的log需要納管,這招就會行不通...
說了這麼多,就是想像BTrace一樣,一個JVM跑得好好的,
想隨時插進去看狀況甚至控制一些事情,不曉得這樣各位大大有無好建議?
(仔細想想,這樣好像變成駭客行為,而且一不小心就有漏洞出現QQ)
※ 編輯: NullLife (114.42.65.102), 03/11/2017 21:25:12
→
03/12 11:52, , 4F
03/12 11:52, 4F
→
03/12 11:53, , 5F
03/12 11:53, 5F
→
03/12 11:54, , 6F
03/12 11:54, 6F
→
03/12 11:54, , 7F
03/12 11:54, 7F
→
03/12 11:55, , 8F
03/12 11:55, 8F
→
03/12 11:55, , 9F
03/12 11:55, 9F
→
03/12 11:56, , 10F
03/12 11:56, 10F
→
03/12 11:56, , 11F
03/12 11:56, 11F
感謝qrtt1大大,
可惜無奈現實考量,不是說缺馬上就有硬體resource可以用的...
但我會研究一下fluentd,感謝<(_ _)>
※ 編輯: NullLife (114.42.68.46), 03/12/2017 19:51:53
推
03/15 14:25, , 12F
03/15 14:25, 12F
java 近期熱門文章
PTT數位生活區 即時熱門文章