Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "time"
- //"encoding/json"
- "github.com/shirou/gopsutil/disk"
- "github.com/shirou/gopsutil/load"
- "github.com/shirou/gopsutil/mem"
- "github.com/esvm/dcm-middleware/distribution/models"
- "github.com/esvm/dcm-middleware/dcm"
- "github.com/esvm/dcm-middleware/scylla"
- //"github.com/streadway/amqp"
- )
- var (
- loadCPUTopic *models.Topic
- memUsedTopic *models.Topic
- diskUsedTopic *models.Topic
- )
- const host = "ec2-18-231-106-190.sa-east-1.compute.amazonaws.com"
- type data struct {
- loadCPU5 float64
- memUsed float64
- diskUsed float64
- }
- func getInfoHW() data {
- time.Sleep(200 * time.Millisecond)
- m, _ := mem.VirtualMemory()
- l, _ := load.Avg()
- d, _ := disk.Usage("/")
- return data{
- loadCPU5: l.Load5,
- memUsed: m.UsedPercent,
- diskUsed: d.UsedPercent,
- }
- }
- func publish(c *dcm.Connection, topic *models.Topic, payload float64) {
- message := &models.Message{
- TopicID: topic.ID,
- Payload: payload,
- }
- err := c.Publish(topic.ID, message)
- if err != nil {
- fmt.Println(err)
- }
- }
- func createTopics(c *dcm.Connection) error {
- var err error
- loadCPUTopic, err = c.CreateTopic("load_cpu", models.TopicProperties{IndexName: "load_cpu_index", StartFrom: scylla.Begin})
- if err != nil {
- return err
- }
- memUsedTopic, err = c.CreateTopic("mem_used", models.TopicProperties{IndexName: "mem_used_index", StartFrom: scylla.Begin})
- if err != nil {
- return err
- }
- diskUsedTopic, err = c.CreateTopic("disk_used", models.TopicProperties{IndexName: "disk_used_index", StartFrom: scylla.Begin})
- if err != nil {
- return err
- }
- return nil
- }
- /*func createTopicsRabbitMQ(ch *amqp.Channel) {
- ch.QueueDeclare("load_cpu", false, false, false, false, nil)
- ch.QueueDeclare("mem_used", false, false, false, false, nil)
- ch.QueueDeclare("disk_used", false, false, false, false, nil)
- }
- func publishRabbitMQ(ch *amqp.Channel, name string, value float64) {
- body, _ := json.Marshal(value)
- ch.Publish("",
- name,
- false,
- false,
- amqp.Publishing{
- ContentType: "application/json",
- Body: body,
- })
- }*/
- func main() {
- c, err := dcm.Connect(host, 8426, 10)
- defer c.Close()
- err = createTopics(c)
- if err != nil {
- fmt.Println(err)
- return
- }
- /*conn, err := amqp.Dial("amqp://guest:guest@ec2-18-231-106-190.sa-east-1.compute.amazonaws.com:5672")
- if err != nil {
- return
- }
- ch, err := conn.Channel()
- createTopicsRabbitMQ(ch)*/
- for {
- dataHW := getInfoHW()
- publish(c, loadCPUTopic, dataHW.loadCPU5)
- publish(c, memUsedTopic, dataHW.memUsed)
- publish(c, diskUsedTopic, dataHW.diskUsed)
- /*publishRabbitMQ(ch, "load_cpu", dataHW.loadCPU5)
- publishRabbitMQ(ch, "mem_used", dataHW.memUsed)
- publishRabbitMQ(ch, "disk_used", dataHW.diskUsed)*/
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement