Golang HTTP status checker
Style


Use CamelCase only. last_status -> lastStatus, site_json -> siteJSON, etc.
Even in constants. UP -> Up or StatusUp, etc.
Imports are usually split into groups by source, so separate memcache from stdlib with a newline.
Stuttering. E.g. configuration := Configuration{} could be c := Configuration{}.
People would search for main() in main.go. So I would rename monitor.go to main.go.


Code

file, _ := os.Open(path)


I see you skip error handling in some places. I'm not sure whether this is just a brief version for this site, or an actual code, but this is a very bad practice.

v.last_status == 2

if (err == nil) &amp;&amp; (resp.StatusCode == 200) {


Avoid magic numbers. Use Up/StatusUp and http.StatusOK respectively.

for i := 0; i &lt; len(sites); i++ {


I'd use range. In Go 1.4 it'll be legal to write for range sites as well.

site := sites[res.url]
if site.last_status != res.status {
    sites[res.url].last_status = res.status
}


You index the map twice and make an unnecessary comparison. Wouldn't sites[res.url] = res.status do?

Architecture

If you can change the output JSON format, I'd suggest saving the status code returned by http.Get rather than a simple bool. That will give you more info on why the site is down (4XX and 5XX error) or that the site have moved (3XX).


  I have attempted to do this concurrently using go routines but I'm concerned about my synchronization step.


Your synchronisation seems mostly fine to me. (Don't forget to test with -race though). An alternative would be to use sync.WaitGroup and a map with a sync.Mutex.